home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / pc / files / mac / proj_a1.hqx / Project Mac - A1 / MorseSender < prev    next >
Text File  |  1984-12-14  |  3KB  |  134 lines

  1. REM    Morse Sender  by  Mark Aaker,  NT6G    Copyright 1984
  2. REM    modified from Morse Code Practice  by Larry Jones,  W0AY
  3. PRINT
  4. PRINT "Morse Sender:"
  5. PRINT "I'll send groups of 5 characters selected at random."
  6. PRINT "Please wait while I get set up. . ."
  7.  
  8. REM    Set up Waveform
  9. DIM A%(260)
  10. FOR I% = -127 TO 128
  11.     LET A%(I% +127) = INT(80*(ATN(I%)))
  12. NEXT I%
  13. WAVE 1, A%
  14.  
  15. REM    Set up sound defaults
  16. freq = 600
  17. dur = 2.2
  18. volume = 255
  19.  
  20. REM     Set up other default variables
  21. RANDOMIZE TIMER
  22.  
  23. REM    Read letter and morse equivalent data from 8x5 table
  24. FOR I= 1 TO 8
  25. FOR J= 1 TO 5
  26. READ LTR$(I,J), MRSE$(I,J)
  27. NEXT J
  28. NEXT I
  29.  
  30. DATA 5,IIIII,0,AAAAA,E,I,T,A,A,IA
  31. DATA S,III,L,IAII,U,IIA,Q,AAIA,J,IAAA
  32. DATA H,IIII,O,AAA,N,AI,C,AIAI,V,IIIA
  33. DATA I,II,B,AIII,Y,AIAA,P,IAAI,R,IAI
  34. DATA W,IAA,K,AIA,Z,AAII,M,AA,D,AII
  35. DATA X,AIIA,F,IIAI,G,AAI,",",AAIIAA,.,IAIAIA
  36. DATA 1,IAAAA,2,IIAAA,3,IIIAA,4,IIIIA,/,AIIAI
  37. DATA 6,AIIII,7,AAIII,8,AAAII,9,AAAAI,?,IIAAII
  38.  
  39. REM    Get user input
  40. getinput:
  41. PRINT
  42. PRINT "Enter zero to quit."
  43. INPUT "How many minutes shall I send "; minutes
  44. IF (minutes = 0) THEN GOTO ending
  45. INPUT "At what words per minute speed "; wpm
  46. IF (wpm = 0) THEN GOTO ending
  47. PRINT " "
  48. REM    calculate Number of Letters to send
  49. REM    5/6 adjusts since random letter groups are longer than English text
  50. NL = minutes * wpm * 5! * 5!/6!
  51. REM    Fudge * Macdur * random group speed
  52. dur = .933 * 18.2 * 1!/ wpm
  53.  
  54. REM    reset counters
  55. lcount = 0
  56. wcount = 1
  57.  
  58. REM    Start sound gen. to get past starting click
  59. REM    and wait for disk to stop
  60. SOUND 0, 77, 0, 1
  61. SOUND 0, 77, 0, 1
  62.  
  63. start:
  64. REM    For each Letter to Send 
  65. FOR LS= 1 TO NL
  66.  
  67. REM    Randomly pick a letter out of 8x5 table
  68. I= 1 + INT(RND(1) * 8)
  69. J= 1 + INT(RND(1) * 5)
  70.  
  71. REM    Check if 6th letter, send word space first
  72. lcount = lcount + 1
  73. IF (lcount < 6) THEN GOTO Send
  74.     GOSUB wspace
  75.     PRINT "        ";
  76.     lcount = 1
  77.     wcount = wcount + 1
  78.     REM    Check if 6th word, send return first
  79.     IF (wcount < 6) THEN GOTO Send
  80.         PRINT " "
  81.         wcount = 1
  82.  
  83. REM    Send all morse elements of the letter, Dit or Dah
  84. Send:
  85. FOR DOD = 1 TO LEN(MRSE$(I,J))
  86.     IF MID$(MRSE$(I,J),DOD,1) = "I" THEN GOSUB dit
  87.     IF MID$(MRSE$(I,J),DOD,1) = "A" THEN GOSUB dah
  88. NEXT DOD
  89.  
  90. REM    Send a letter space after the letter
  91. GOSUB lspace
  92.  
  93. REM    print the letter
  94. PRINT LTR$(I, J);
  95.  
  96. REM    Loop for next letter
  97. NEXT LS
  98.  
  99. REM    All letters sent, send space
  100. SOUND 0, 77, 0, 1
  101.  
  102. REM    waste time so disk won't start till sound done
  103. FOR k = 1 TO 2047
  104. NEXT k
  105.  
  106. GOTO getinput
  107.  
  108. ending:
  109. SYSTEM
  110. END
  111.  
  112. REM Subroutine dit
  113. dit:
  114. SOUND freq, dur, volume, 1
  115. SOUND 0, dur, 0, 1
  116. RETURN
  117.  
  118. REM Subroutine dah
  119. dah:
  120. SOUND freq, 3*dur, volume, 1
  121. SOUND 0, dur, 0, 1
  122. RETURN
  123.  
  124. REM    Subroutine letter space
  125. lspace:
  126. SOUND 0, 3 * dur, 0, 1
  127. RETURN
  128.  
  129. REM    Subroutine word space
  130. wspace:
  131. SOUND 0, 7 * dur, 0, 1
  132. RETURN
  133.  
  134.